[INFO] cloning repository https://github.com/brsbyrk/motif
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/brsbyrk/motif" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrsbyrk%2Fmotif", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrsbyrk%2Fmotif'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4c33d3df926562959b794a2d57470c51bd15851c
[INFO] fixing brsbyrk/motif against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrsbyrk%2Fmotif" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-0-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/brsbyrk/motif
[INFO] finished tweaking git repo https://github.com/brsbyrk/motif
[INFO] tweaked toml for git repo https://github.com/brsbyrk/motif written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/brsbyrk/motif on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/brsbyrk/motif already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rhai_codegen v3.2.0
[INFO] [stderr]   Downloaded rustysynth v1.3.6
[INFO] [stderr]   Downloaded kqueue-sys v1.1.2
[INFO] [stderr]   Downloaded coreaudio-sys v0.2.18
[INFO] [stderr]   Downloaded kqueue v1.2.0
[INFO] [stderr]   Downloaded midly v0.5.3
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.73
[INFO] [stderr]   Downloaded toml_edit v0.25.12+spec-1.1.0
[INFO] [stderr]   Downloaded rhai v1.25.1
[INFO] [stderr]   Downloaded web-sys v0.3.100
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 5860940a90efe106a8ec4262b7aee34d4d8b724dc1a032faa7af4f88762b1a46
[INFO] running `Command { std: "docker" "start" "5860940a90efe106a8ec4262b7aee34d4d8b724dc1a032faa7af4f88762b1a46", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5860940a90efe106a8ec4262b7aee34d4d8b724dc1a032faa7af4f88762b1a46" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5860940a90efe106a8ec4262b7aee34d4d8b724dc1a032faa7af4f88762b1a46", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5860940a90efe106a8ec4262b7aee34d4d8b724dc1a032faa7af4f88762b1a46" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating crates/pattern-core/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/mini-notation/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/synth-engine/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-core/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/music-theory/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-composer/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-audio/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-midi/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wasm/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-cli/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]     Checking memchr v2.8.1
[INFO] [stderr]     Checking hound v3.5.1
[INFO] [stderr]     Checking rustysynth v1.3.6
[INFO] [stderr]     Checking pattern-core v0.1.0 (/opt/rustwide/workdir/crates/pattern-core)
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.123
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]     Checking bitflags v2.13.0
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]     Checking dasp_sample v0.11.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Migrating crates/pattern-core/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling smartstring v1.0.1
[INFO] [stderr]    Compiling bumpalo v3.20.3
[INFO] [stderr]     Checking either v1.16.0
[INFO] [stderr]    Compiling wasm-bindgen v0.2.123
[INFO] [stderr]     Checking inotify-sys v0.1.5
[INFO] [stderr]     Checking unicode-ident v1.0.24
[INFO] [stderr]     Checking log v0.4.32
[INFO] [stderr]     Checking filetime v0.2.29
[INFO] [stderr]     Checking inotify v0.9.6
[INFO] [stderr]     Checking thin-vec v0.2.18
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]     Checking notify v6.1.1
[INFO] [stderr]     Checking alsa v0.9.1
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking midly v0.5.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.123
[INFO] [stderr]     Checking synth-engine v0.1.0 (/opt/rustwide/workdir/crates/synth-engine)
[INFO] [stderr]    Migrating crates/synth-engine/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling rhai_codegen v3.2.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]     Checking motif-midi v0.1.0 (/opt/rustwide/workdir/crates/motif-midi)
[INFO] [stderr]    Migrating crates/motif-midi/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]     Checking rhai v1.25.1
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking mini-notation v0.1.0 (/opt/rustwide/workdir/crates/mini-notation)
[INFO] [stderr]    Migrating crates/mini-notation/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]        Fixed crates/mini-notation/src/lib.rs (4 fixes)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/mini-notation/src/lib.rs:74:9
[INFO] [stdout]     |
[INFO] [stdout]  74 |         nom::bytes::complete::tag::<&str, &str, nom::error::Error<&str>>($tag)($input)
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#8`
[INFO] [stdout]     |         up until Edition 2021 `#8` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 124 |     let (mut input, mut pat) = ws(parse_sub_pattern)(input)?;
[INFO] [stdout]     |                     -------
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     `pat` calls a custom destructor
[INFO] [stdout]     |                     `pat` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 131 |             nom::bytes::complete::tag::<&str, &str, nom::error::Error<&str>>("::")(checkpoint)
[INFO] [stdout]     |             ----------------------------------------------------------------------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |             `#1` will be dropped later as of Edition 2024
[INFO] [stdout] 132 |         {
[INFO] [stdout] 133 |             let (rest, gate_sub) = ws(parse_sub_pattern)(after_colons)?;
[INFO] [stdout]     |                        --------    ------------------------------------
[INFO] [stdout]     |                        |           |
[INFO] [stdout]     |                        |           this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                        |           `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |                        |           this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                        |           `#3` will be dropped later as of Edition 2024
[INFO] [stdout]     |                        |           this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                        |           `#4` will be dropped later as of Edition 2024
[INFO] [stdout]     |                        `gate_sub` calls a custom destructor
[INFO] [stdout]     |                        `gate_sub` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 136 |             let gate_bool = gate_sub.fmap(|ev: NoteEvent| {
[INFO] [stdout]     |                 ---------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `gate_bool` calls a custom destructor
[INFO] [stdout]     |                 `gate_bool` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 144 |         match tag!(checkpoint, ",") {
[INFO] [stdout]     |               --------------------- in this macro invocation
[INFO] [stdout] 145 |             Ok((after_comma, _)) => {
[INFO] [stdout] 146 |                 let (rest, next) = ws(parse_sub_pattern)(after_comma)?;
[INFO] [stdout]     |                            ----    -----------------------------------
[INFO] [stdout]     |                            |       |
[INFO] [stdout]     |                            |       this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                            |       `#5` will be dropped later as of Edition 2024
[INFO] [stdout]     |                            |       this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |                            |       `#6` will be dropped later as of Edition 2024
[INFO] [stdout]     |                            |       this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]     |                            |       `#7` will be dropped later as of Edition 2024
[INFO] [stdout]     |                            `next` calls a custom destructor
[INFO] [stdout]     |                            `next` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 152 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `pat` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `gate_sub` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `gate_bool` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `next` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout]     = note: this warning originates in the macro `tag` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/mini-notation/src/lib.rs:74:9
[INFO] [stdout]     |
[INFO] [stdout]  74 |         nom::bytes::complete::tag::<&str, &str, nom::error::Error<&str>>($tag)($input)
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 256 |         match tag!(input, ".") {
[INFO] [stdout]     |               ---------------- in this macro invocation
[INFO] [stdout] 257 |             Ok((after_dot, _)) => match parse_dot_element(after_dot) {
[INFO] [stdout]     |                                         ----------------------------
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 266 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: this warning originates in the macro `tag` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/mini-notation/src/lib.rs:659:28
[INFO] [stdout]     |
[INFO] [stdout] 642 |     let mut pending_sample_elem: Option<Pattern<NoteEvent>> = None;
[INFO] [stdout]     |         -----------------------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `pending_sample_elem` calls a custom destructor
[INFO] [stdout]     |         `pending_sample_elem` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 648 |     for elem in elements {
[INFO] [stdout]     |         ----    --------
[INFO] [stdout]     |         |       |
[INFO] [stdout]     |         |       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         |       `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |         `elem` calls a custom destructor
[INFO] [stdout]     |         `elem` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 659 |             } else { match pending_sample_elem.take() { Some(pending) => {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 662 |             } _ => {}}}
[INFO] [stdout]     |                       - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `pending_sample_elem` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `elem` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking motif-audio v0.1.0 (/opt/rustwide/workdir/crates/motif-audio)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/mini-notation/src/lib.rs:74:9
[INFO] [stdout]     |
[INFO] [stdout]  74 |         nom::bytes::complete::tag::<&str, &str, nom::error::Error<&str>>($tag)($input)
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#8`
[INFO] [stdout]     |         up until Edition 2021 `#8` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 124 |     let (mut input, mut pat) = ws(parse_sub_pattern)(input)?;
[INFO] [stdout]     |                     -------
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     `pat` calls a custom destructor
[INFO] [stdout]     |                     `pat` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 131 |             nom::bytes::complete::tag::<&str, &str, nom::error::Error<&str>>("::")(checkpoint)
[INFO] [stdout]     |             ----------------------------------------------------------------------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |             `#1` will be dropped later as of Edition 2024
[INFO] [stdout] 132 |         {
[INFO] [stdout] 133 |             let (rest, gate_sub) = ws(parse_sub_pattern)(after_colons)?;
[INFO] [stdout]     |                        --------    ------------------------------------
[INFO] [stdout]     |                        |           |
[INFO] [stdout]     |                        |           this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                        |           `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |                        |           this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                        |           `#3` will be dropped later as of Edition 2024
[INFO] [stdout]     |                        |           this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                        |           `#4` will be dropped later as of Edition 2024
[INFO] [stdout]     |                        `gate_sub` calls a custom destructor
[INFO] [stdout]     |                        `gate_sub` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 136 |             let gate_bool = gate_sub.fmap(|ev: NoteEvent| {
[INFO] [stdout]     |                 ---------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `gate_bool` calls a custom destructor
[INFO] [stdout]     |                 `gate_bool` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 144 |         match tag!(checkpoint, ",") {
[INFO] [stdout]     |               --------------------- in this macro invocation
[INFO] [stdout] 145 |             Ok((after_comma, _)) => {
[INFO] [stdout] 146 |                 let (rest, next) = ws(parse_sub_pattern)(after_comma)?;
[INFO] [stdout]     |                            ----    -----------------------------------
[INFO] [stdout]     |                            |       |
[INFO] [stdout]     |                            |       this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                            |       `#5` will be dropped later as of Edition 2024
[INFO] [stdout]     |                            |       this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |                            |       `#6` will be dropped later as of Edition 2024
[INFO] [stdout]     |                            |       this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]     |                            |       `#7` will be dropped later as of Edition 2024
[INFO] [stdout]     |                            `next` calls a custom destructor
[INFO] [stdout]     |                            `next` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 152 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `pat` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `gate_sub` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `gate_bool` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `next` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout]     = note: this warning originates in the macro `tag` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/mini-notation/src/lib.rs:74:9
[INFO] [stdout]     |
[INFO] [stdout]  74 |         nom::bytes::complete::tag::<&str, &str, nom::error::Error<&str>>($tag)($input)
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 256 |         match tag!(input, ".") {
[INFO] [stdout]     |               ---------------- in this macro invocation
[INFO] [stdout] 257 |             Ok((after_dot, _)) => match parse_dot_element(after_dot) {
[INFO] [stdout]     |                                         ----------------------------
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 266 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: this warning originates in the macro `tag` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/mini-notation/src/lib.rs:659:28
[INFO] [stdout]     |
[INFO] [stdout] 642 |     let mut pending_sample_elem: Option<Pattern<NoteEvent>> = None;
[INFO] [stdout]     |         -----------------------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `pending_sample_elem` calls a custom destructor
[INFO] [stdout]     |         `pending_sample_elem` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 648 |     for elem in elements {
[INFO] [stdout]     |         ----    --------
[INFO] [stdout]     |         |       |
[INFO] [stdout]     |         |       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         |       `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |         `elem` calls a custom destructor
[INFO] [stdout]     |         `elem` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 659 |             } else { match pending_sample_elem.take() { Some(pending) => {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 662 |             } _ => {}}}
[INFO] [stdout]     |                       - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `pending_sample_elem` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `elem` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating crates/motif-audio/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.123
[INFO] [stderr]    Migrating crates/motif-midi/examples/midi_export.rs from 2021 edition to 2024
[INFO] [stderr]     Checking music-theory v0.1.0 (/opt/rustwide/workdir/crates/music-theory)
[INFO] [stderr]    Migrating crates/music-theory/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed crates/music-theory/src/lib.rs (1 fix)
[INFO] [stderr]     Checking motif-core v0.1.0 (/opt/rustwide/workdir/crates/motif-core)
[INFO] [stderr]     Checking motif-composer v0.1.0 (/opt/rustwide/workdir/crates/motif-composer)
[INFO] [stderr]    Migrating crates/motif-composer/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]     Checking motif-wasm v0.1.0 (/opt/rustwide/workdir/crates/motif-wasm)
[INFO] [stderr]        Fixed crates/motif-composer/src/generator.rs (1 fix)
[INFO] [stderr]    Migrating crates/motif-core/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wasm/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]     Checking motif-wav v0.1.0 (/opt/rustwide/workdir/crates/motif-wav)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:430:11
[INFO] [stdout]     |
[INFO] [stdout] 407 |     let pad = ambient_pad(&scale, 0.1);
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `pad` calls a custom destructor
[INFO] [stdout]     |         `pad` will be dropped later as of Edition 2024
[INFO] [stdout] 408 |     let pad = pad.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 417 |     let bells = arpeggiate(&notes[..8], ArpMode::UpDown, 1, 4);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `bells` calls a custom destructor
[INFO] [stdout]     |         `bells` will be dropped later as of Edition 2024
[INFO] [stdout] 418 |     let bells = bells.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 424 |     let bells = bells.slow(Fraction::new(8, 1)).degrade(0.7);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 427 |     let drone = simple_chord(&["c2", "eb2", "g2"], "sweep_pad", 0.25, 8, 0.0);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `drone` calls a custom destructor
[INFO] [stdout]     |         `drone` will be dropped later as of Edition 2024
[INFO] [stdout] 428 |     let drone = drone.slow(Fraction::new(8, 1));
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] 429 |
[INFO] [stdout] 430 |     (bpm, pad.stack(&bells).stack(&drone))
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |           up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 431 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `pad` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `bells` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `drone` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:552:11
[INFO] [stdout]     |
[INFO] [stdout] 495 |     let drums = mini_notation::parse("bd ~ ~ ~ sd ~ ~ ~, hh ~ oh?0.3 hh ~ oh?0.3 hh ~").unwrap();
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `drums` calls a custom destructor
[INFO] [stdout]     |         `drums` will be dropped later as of Edition 2024
[INFO] [stdout] 496 |     let drums = drums.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 517 |     let bass = bassline(&scale, &prog, BassStyle::Walking);
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `bass` calls a custom destructor
[INFO] [stdout]     |         `bass` will be dropped later as of Edition 2024
[INFO] [stdout] 518 |     let bass = bass.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 542 |     let piano = Pattern::sequence(piano_pats).slow(Fraction::new(1, 1));
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `piano` calls a custom destructor
[INFO] [stdout]     |         `piano` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 545 |     let drums = drums.sometimes(0.3, |mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 552 |     (bpm, drums.stack(&bass).stack(&piano))
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |           up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 553 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `drums` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `bass` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `piano` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:589:11
[INFO] [stdout]     |
[INFO] [stdout] 562 |     let violin = note_seq(&melody_notes, "violin", 0.35, 1.0, -0.35);
[INFO] [stdout]     |         ------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `violin` calls a custom destructor
[INFO] [stdout]     |         `violin` will be dropped later as of Edition 2024
[INFO] [stdout] 563 |     let violin = violin.slow(Fraction::new(2, 1));
[INFO] [stdout]     |         ------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 567 |     let viola = note_seq(&viola_notes, "viola", 0.25, 1.0, 0.15);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `viola` calls a custom destructor
[INFO] [stdout]     |         `viola` will be dropped later as of Edition 2024
[INFO] [stdout] 568 |     let viola = viola.slow(Fraction::new(2, 1));
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 572 |     let cello = note_seq(&cello_notes, "cello", 0.3, 1.0, 0.0);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `cello` calls a custom destructor
[INFO] [stdout]     |         `cello` will be dropped later as of Edition 2024
[INFO] [stdout] 573 |     let cello = cello.slow(Fraction::new(2, 1));
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 576 |     let pizz = mini_notation::parse("pizz c2?0.3 ~ ~ ~").unwrap();
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `pizz` calls a custom destructor
[INFO] [stdout]     |         `pizz` will be dropped later as of Edition 2024
[INFO] [stdout] 577 |     let pizz = pizz.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 584 |     let violin = violin.sometimes(0.2, |mut ev: NoteEvent| {
[INFO] [stdout]     |         ------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |         `#5` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 589 |     (bpm, violin.stack(&viola).stack(&cello).stack(&pizz))
[INFO] [stdout]     |           --------------------^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |           up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]     |           up until Edition 2021 `#7` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 590 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#7` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `violin` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `viola` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `cello` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `pizz` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:634:11
[INFO] [stdout]     |
[INFO] [stdout] 601 |     let kick = euclid_pattern(5, 13, "bd");
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `kick` calls a custom destructor
[INFO] [stdout]     |         `kick` will be dropped later as of Edition 2024
[INFO] [stdout] 602 |     let kick = kick.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 609 |     let snare = euclid_pattern(3, 8, "sd");
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `snare` calls a custom destructor
[INFO] [stdout]     |         `snare` will be dropped later as of Edition 2024
[INFO] [stdout] 610 |     let snare = snare.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 617 |     let hats = euclid_pattern(7, 16, "hh");
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `hats` calls a custom destructor
[INFO] [stdout]     |         `hats` will be dropped later as of Edition 2024
[INFO] [stdout] 618 |     let hats = hats
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 628 |     let bass = euclid_pattern(4, 11, "synth_bass");
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `bass` calls a custom destructor
[INFO] [stdout]     |         `bass` will be dropped later as of Edition 2024
[INFO] [stdout] 629 |     let bass = bass.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 634 |     (bpm, kick.stack(&snare).stack(&hats).stack(&bass))
[INFO] [stdout]     |           ------------------^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |           up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |           up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 635 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `kick` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `snare` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `hats` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `bass` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:707:11
[INFO] [stdout]     |
[INFO] [stdout] 674 |     let v1 = arpeggiate(&notes, ArpMode::Up, 1, 1);
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `v1` calls a custom destructor
[INFO] [stdout]     |         `v1` will be dropped later as of Edition 2024
[INFO] [stdout] 675 |     let v1 = v1
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 688 |     let v2 = arpeggiate(&notes[1..], ArpMode::Up, 1, 1);
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `v2` calls a custom destructor
[INFO] [stdout]     |         `v2` will be dropped later as of Edition 2024
[INFO] [stdout] 689 |     let v2 = v2.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 695 |     let v2 = v2.slow(Fraction::new(3, 2)); // 1.5x slower
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 698 |     let v3 = arpeggiate(&notes[2..], ArpMode::Up, 1, 1);
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `v3` calls a custom destructor
[INFO] [stdout]     |         `v3` will be dropped later as of Edition 2024
[INFO] [stdout] 699 |     let v3 = v3.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 705 |     let v3 = v3.slow(Fraction::new(2, 1)).degrade(0.85); // 2x slower
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |         `#5` will be dropped later as of Edition 2024
[INFO] [stdout] 706 |
[INFO] [stdout] 707 |     (bpm, v1.stack(&v2).stack(&v3))
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |           up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 708 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `v1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `v2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `v3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:745:11
[INFO] [stdout]     |
[INFO] [stdout] 716 |     let pad = ambient_pad(&scale, 0.2);
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `pad` calls a custom destructor
[INFO] [stdout]     |         `pad` will be dropped later as of Edition 2024
[INFO] [stdout] 717 |     let pad = pad.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 723 |     let pad = pad.slow(Fraction::new(4, 1));
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 727 |     let bells = arpeggiate(&notes, ArpMode::UpDown, 2, 2);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `bells` calls a custom destructor
[INFO] [stdout]     |         `bells` will be dropped later as of Edition 2024
[INFO] [stdout] 728 |     let bells = bells.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 734 |     let bells = bells.slow(Fraction::new(2, 1)).degrade(0.75);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 737 |     let ep = ambient_pad(&scale, 0.3);
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `ep` calls a custom destructor
[INFO] [stdout]     |         `ep` will be dropped later as of Edition 2024
[INFO] [stdout] 738 |     let ep = ep.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |         `#5` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 745 |     (bpm, pad.stack(&bells).stack(&ep))
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |           up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 746 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `pad` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `bells` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `ep` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:781:11
[INFO] [stdout]     |
[INFO] [stdout] 754 |     let star1 = arpeggiate(&notes[..6], ArpMode::Up, 1, 1);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `star1` calls a custom destructor
[INFO] [stdout]     |         `star1` will be dropped later as of Edition 2024
[INFO] [stdout] 755 |     let star1 = star1
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 768 |     let star2 = arpeggiate(&notes[2..8], ArpMode::Down, 1, 1);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `star2` calls a custom destructor
[INFO] [stdout]     |         `star2` will be dropped later as of Edition 2024
[INFO] [stdout] 769 |     let star2 = star2.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 775 |     let star2 = star2.slow(Fraction::new(3, 2)).degrade(0.85);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 778 |     let pad = simple_chord(&["c3", "e3", "g3", "c4"], "warm_pad", 0.2, 4, 0.0);
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `pad` calls a custom destructor
[INFO] [stdout]     |         `pad` will be dropped later as of Edition 2024
[INFO] [stdout] 779 |     let pad = pad.slow(Fraction::new(4, 1));
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] 780 |
[INFO] [stdout] 781 |     (bpm, star1.stack(&star2).stack(&pad))
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |           up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 782 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `star1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `star2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `pad` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:430:11
[INFO] [stdout]     |
[INFO] [stdout] 407 |     let pad = ambient_pad(&scale, 0.1);
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `pad` calls a custom destructor
[INFO] [stdout]     |         `pad` will be dropped later as of Edition 2024
[INFO] [stdout] 408 |     let pad = pad.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 417 |     let bells = arpeggiate(&notes[..8], ArpMode::UpDown, 1, 4);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `bells` calls a custom destructor
[INFO] [stdout]     |         `bells` will be dropped later as of Edition 2024
[INFO] [stdout] 418 |     let bells = bells.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 424 |     let bells = bells.slow(Fraction::new(8, 1)).degrade(0.7);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 427 |     let drone = simple_chord(&["c2", "eb2", "g2"], "sweep_pad", 0.25, 8, 0.0);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `drone` calls a custom destructor
[INFO] [stdout]     |         `drone` will be dropped later as of Edition 2024
[INFO] [stdout] 428 |     let drone = drone.slow(Fraction::new(8, 1));
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] 429 |
[INFO] [stdout] 430 |     (bpm, pad.stack(&bells).stack(&drone))
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |           up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 431 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `pad` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `bells` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `drone` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:552:11
[INFO] [stdout]     |
[INFO] [stdout] 495 |     let drums = mini_notation::parse("bd ~ ~ ~ sd ~ ~ ~, hh ~ oh?0.3 hh ~ oh?0.3 hh ~").unwrap();
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `drums` calls a custom destructor
[INFO] [stdout]     |         `drums` will be dropped later as of Edition 2024
[INFO] [stdout] 496 |     let drums = drums.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 517 |     let bass = bassline(&scale, &prog, BassStyle::Walking);
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `bass` calls a custom destructor
[INFO] [stdout]     |         `bass` will be dropped later as of Edition 2024
[INFO] [stdout] 518 |     let bass = bass.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 542 |     let piano = Pattern::sequence(piano_pats).slow(Fraction::new(1, 1));
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `piano` calls a custom destructor
[INFO] [stdout]     |         `piano` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 545 |     let drums = drums.sometimes(0.3, |mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 552 |     (bpm, drums.stack(&bass).stack(&piano))
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |           up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 553 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `drums` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `bass` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `piano` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating crates/motif-composer/examples/diag_composer.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:589:11
[INFO] [stdout]     |
[INFO] [stdout] 562 |     let violin = note_seq(&melody_notes, "violin", 0.35, 1.0, -0.35);
[INFO] [stdout]     |         ------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `violin` calls a custom destructor
[INFO] [stdout]     |         `violin` will be dropped later as of Edition 2024
[INFO] [stdout] 563 |     let violin = violin.slow(Fraction::new(2, 1));
[INFO] [stdout]     |         ------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 567 |     let viola = note_seq(&viola_notes, "viola", 0.25, 1.0, 0.15);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `viola` calls a custom destructor
[INFO] [stdout]     |         `viola` will be dropped later as of Edition 2024
[INFO] [stdout] 568 |     let viola = viola.slow(Fraction::new(2, 1));
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 572 |     let cello = note_seq(&cello_notes, "cello", 0.3, 1.0, 0.0);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `cello` calls a custom destructor
[INFO] [stdout]     |         `cello` will be dropped later as of Edition 2024
[INFO] [stdout] 573 |     let cello = cello.slow(Fraction::new(2, 1));
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 576 |     let pizz = mini_notation::parse("pizz c2?0.3 ~ ~ ~").unwrap();
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `pizz` calls a custom destructor
[INFO] [stdout]     |         `pizz` will be dropped later as of Edition 2024
[INFO] [stdout] 577 |     let pizz = pizz.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 584 |     let violin = violin.sometimes(0.2, |mut ev: NoteEvent| {
[INFO] [stdout]     |         ------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |         `#5` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 589 |     (bpm, violin.stack(&viola).stack(&cello).stack(&pizz))
[INFO] [stdout]     |           --------------------^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |           up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]     |           up until Edition 2021 `#7` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 590 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#7` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `violin` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `viola` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `cello` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `pizz` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:634:11
[INFO] [stdout]     |
[INFO] [stdout] 601 |     let kick = euclid_pattern(5, 13, "bd");
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `kick` calls a custom destructor
[INFO] [stdout]     |         `kick` will be dropped later as of Edition 2024
[INFO] [stdout] 602 |     let kick = kick.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 609 |     let snare = euclid_pattern(3, 8, "sd");
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `snare` calls a custom destructor
[INFO] [stdout]     |         `snare` will be dropped later as of Edition 2024
[INFO] [stdout] 610 |     let snare = snare.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 617 |     let hats = euclid_pattern(7, 16, "hh");
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `hats` calls a custom destructor
[INFO] [stdout]     |         `hats` will be dropped later as of Edition 2024
[INFO] [stdout] 618 |     let hats = hats
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 628 |     let bass = euclid_pattern(4, 11, "synth_bass");
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `bass` calls a custom destructor
[INFO] [stdout]     |         `bass` will be dropped later as of Edition 2024
[INFO] [stdout] 629 |     let bass = bass.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 634 |     (bpm, kick.stack(&snare).stack(&hats).stack(&bass))
[INFO] [stdout]     |           ------------------^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |           up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |           up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 635 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `kick` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `snare` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `hats` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `bass` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:707:11
[INFO] [stdout]     |
[INFO] [stdout] 674 |     let v1 = arpeggiate(&notes, ArpMode::Up, 1, 1);
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `v1` calls a custom destructor
[INFO] [stdout]     |         `v1` will be dropped later as of Edition 2024
[INFO] [stdout] 675 |     let v1 = v1
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 688 |     let v2 = arpeggiate(&notes[1..], ArpMode::Up, 1, 1);
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `v2` calls a custom destructor
[INFO] [stdout]     |         `v2` will be dropped later as of Edition 2024
[INFO] [stdout] 689 |     let v2 = v2.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 695 |     let v2 = v2.slow(Fraction::new(3, 2)); // 1.5x slower
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 698 |     let v3 = arpeggiate(&notes[2..], ArpMode::Up, 1, 1);
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `v3` calls a custom destructor
[INFO] [stdout]     |         `v3` will be dropped later as of Edition 2024
[INFO] [stdout] 699 |     let v3 = v3.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 705 |     let v3 = v3.slow(Fraction::new(2, 1)).degrade(0.85); // 2x slower
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |         `#5` will be dropped later as of Edition 2024
[INFO] [stdout] 706 |
[INFO] [stdout] 707 |     (bpm, v1.stack(&v2).stack(&v3))
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |           up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 708 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `v1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `v2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `v3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:745:11
[INFO] [stdout]     |
[INFO] [stdout] 716 |     let pad = ambient_pad(&scale, 0.2);
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `pad` calls a custom destructor
[INFO] [stdout]     |         `pad` will be dropped later as of Edition 2024
[INFO] [stdout] 717 |     let pad = pad.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 723 |     let pad = pad.slow(Fraction::new(4, 1));
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 727 |     let bells = arpeggiate(&notes, ArpMode::UpDown, 2, 2);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `bells` calls a custom destructor
[INFO] [stdout]     |         `bells` will be dropped later as of Edition 2024
[INFO] [stdout] 728 |     let bells = bells.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 734 |     let bells = bells.slow(Fraction::new(2, 1)).degrade(0.75);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 737 |     let ep = ambient_pad(&scale, 0.3);
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `ep` calls a custom destructor
[INFO] [stdout]     |         `ep` will be dropped later as of Edition 2024
[INFO] [stdout] 738 |     let ep = ep.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         --
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |         `#5` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 745 |     (bpm, pad.stack(&bells).stack(&ep))
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |           up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 746 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `pad` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `bells` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `ep` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/motif-wasm/src/presets.rs:781:11
[INFO] [stdout]     |
[INFO] [stdout] 754 |     let star1 = arpeggiate(&notes[..6], ArpMode::Up, 1, 1);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `star1` calls a custom destructor
[INFO] [stdout]     |         `star1` will be dropped later as of Edition 2024
[INFO] [stdout] 755 |     let star1 = star1
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |         `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 768 |     let star2 = arpeggiate(&notes[2..8], ArpMode::Down, 1, 1);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `star2` calls a custom destructor
[INFO] [stdout]     |         `star2` will be dropped later as of Edition 2024
[INFO] [stdout] 769 |     let star2 = star2.fmap(|mut ev: NoteEvent| {
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 775 |     let star2 = star2.slow(Fraction::new(3, 2)).degrade(0.85);
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 778 |     let pad = simple_chord(&["c3", "e3", "g3", "c4"], "warm_pad", 0.2, 4, 0.0);
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `pad` calls a custom destructor
[INFO] [stdout]     |         `pad` will be dropped later as of Edition 2024
[INFO] [stdout] 779 |     let pad = pad.slow(Fraction::new(4, 1));
[INFO] [stdout]     |         ---
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] 780 |
[INFO] [stdout] 781 |     (bpm, star1.stack(&star2).stack(&pad))
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |           up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 782 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `star1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `star2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `pad` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating crates/motif-wav/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/gen_samples.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/section_song.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/showcase_piano_drums.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/slow_song.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/strudel_chord_progression.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/note_test.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/groove_test.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/synth-engine/examples/render_test.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/verify_all.rs from 2021 edition to 2024
[INFO] [stdout] error: argument never used
[INFO] [stdout]   --> crates/synth-engine/examples/render_test.rs:40:46
[INFO] [stdout]    |
[INFO] [stdout] 40 |         println!("  {t:.4}s  pad={:.3}s", t, t * sr as f64);
[INFO] [stdout]    |                  -----------------------     ^^^^^^^^^^^^^ argument never used
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  formatting specifier missing
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]  --> crates/synth-engine/examples/render_test.rs:9:78
[INFO] [stdout]   |
[INFO] [stdout] 9 | ...   (NoteEvent{ note: None, sample: Some("bd".into()), gain: 0.5, speed: None, pan: 0.0, ornament: None, duration: Some(0.25) }, 0....
[INFO] [stdout]   |                                                                            ^^^^ expected `f64`, found `Option<_>`
[INFO] [stdout]   |
[INFO] [stdout]   = note: expected type `f64`
[INFO] [stdout]              found enum `Option<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> crates/synth-engine/examples/render_test.rs:10:78
[INFO] [stdout]    |
[INFO] [stdout] 10 | ...   (NoteEvent{ note: None, sample: Some("bd".into()), gain: 0.5, speed: None, pan: 0.0, ornament: None, duration: Some(0.25) }, 0...
[INFO] [stdout]    |                                                                            ^^^^ expected `f64`, found `Option<_>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `f64`
[INFO] [stdout]               found enum `Option<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> crates/synth-engine/examples/render_test.rs:11:78
[INFO] [stdout]    |
[INFO] [stdout] 11 | ...   (NoteEvent{ note: None, sample: Some("bd".into()), gain: 0.5, speed: None, pan: 0.0, ornament: None, duration: Some(0.25) }, 0...
[INFO] [stdout]    |                                                                            ^^^^ expected `f64`, found `Option<_>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `f64`
[INFO] [stdout]               found enum `Option<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> crates/synth-engine/examples/render_test.rs:12:78
[INFO] [stdout]    |
[INFO] [stdout] 12 | ...   (NoteEvent{ note: None, sample: Some("bd".into()), gain: 0.5, speed: None, pan: 0.0, ornament: None, duration: Some(0.25) }, 1...
[INFO] [stdout]    |                                                                            ^^^^ expected `f64`, found `Option<_>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `f64`
[INFO] [stdout]               found enum `Option<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `synth-engine` (example "render_test") due to 5 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr]        Fixed crates/motif-wav/examples/verify_all.rs (3 fixes)
[INFO] [stderr]    Migrating crates/motif-wav/examples/dark_piece.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/real_song.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/better_song.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/coastline.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/slow_song_v3.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/strudel_ambient_texture.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/model_demo.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/dark_ambient.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/feature_sweep.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/surprise_song.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/strudel_kitchen_sink.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/synth-engine/tests/e2e_test.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/motif-wav/examples/strudel_drum_beat.rs from 2021 edition to 2024
[INFO] running `Command { std: "docker" "inspect" "5860940a90efe106a8ec4262b7aee34d4d8b724dc1a032faa7af4f88762b1a46", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5860940a90efe106a8ec4262b7aee34d4d8b724dc1a032faa7af4f88762b1a46", kill_on_drop: false }`
[INFO] [stdout] 5860940a90efe106a8ec4262b7aee34d4d8b724dc1a032faa7af4f88762b1a46
